/* 
给定一个整数数组，找出总和最大的连续数列，并返回总和。

输入： [-2,1,-3,4,-1,2,1,-5,4]
输出： 6
解释： 连续子数组 [4,-1,2,1] 的和最大，为 6。

如果你已经实现复杂度为 O(n) 的解法，尝试使用更为精妙的分治法求解。

思路：遍历时，到每一项都判断前i项的和加上第i项是否大于0，大于0就求和，小于0就从当前项开始求和，比较之前的最大值与当前求和
*/
/**
 * @param {number[]} nums
 * @return {number}
 */
 var maxSubArray = function(nums) {
    // let sum=0,maxNum=nums[0]
    // for (const num of nums) {
    //     if(sum>0){
    //         sum+=num
    //     }else{
    //         sum=num
    //     }
    //     maxNum=Math.max(maxNum,sum)
    // }
    // return maxNum

    
    let pre = 0, maxAns = nums[0];
    nums.forEach((x) => {
        pre = Math.max(pre + x, x);
        maxAns = Math.max(maxAns, pre);
    });
    return maxAns;
};

let nums=[-2,1,-3,4,-1,2,1,-5,4]

let res = maxSubArray(nums)
console.log(res);